package com.szxy.vo;

import com.szxy.constants.HttpStatus;
import java.util.HashMap;

/**
 * @Author: zwz
 * @Date:2020/7/20 21:30
 * @Description:com.szxy.vo
 * @Version:1.0 将后端响应结果发送给前端
 * 封装状态码、状态信息、数据条数以及数据对象
 **/
public class AjaxResult extends HashMap<String, Object> {
    private static final long serialVersionUID = 1L;
    /*** 状态码 */
    public static final String CODE_TAG = "code";
    /*** 返回内容 */
    public static final String MSG_TAG = "msg";
    /*** 数据对象 */
    public static final String DATA_TAG = "data";
    /*** 数据总条数 */
    public static final String DATA_TOTAL = "total";

    /*** 初始化一个新创建的 AjaxResult 对象，使其表示一个空消息。 */
    public AjaxResult() {
    }

    /*** 初始化一个新创建的 AjaxResult 对象 * 7
     8 * @param code 状态码 * @param msg 返回内容 */
    public AjaxResult(int code, String msg) {
        super.put(CODE_TAG, code);
        super.put(MSG_TAG, msg);
    }

    /*** 初始化一个新创建的 AjaxResult 对象 ** @param code 状态码 * @param msg 返回内容 * @param data 数据对象 */
    public AjaxResult(int code, String msg, Object data) {
        super.put(CODE_TAG, code);
        super.put(MSG_TAG, msg);
        super.put(DATA_TAG, data);
    }

    /*** 初始化一个新创建的 AjaxResult 对象 ** @param code 状态码 * @param msg 返回内容 * @param data 数据对象 * @param total 数据总条数 */
    public AjaxResult(int code, String msg, Object data, Long total) {
        super.put(CODE_TAG, code);
        super.put(MSG_TAG, msg);
        super.put(DATA_TAG, data);
        super.put(DATA_TOTAL, total);
    }

    /*** 返回成功消息 ** @return 成功消息 */
    public static AjaxResult success() {
        return AjaxResult.success("操作成功");
    }

    /*** 返回成功数据 ** @return 成功消息 */
    public static AjaxResult success(Object data) {
        return AjaxResult.success("操作成功", data);
    }

    /*** 返回成功消息 ** @param msg 返回内容 * @return 成功消息 */
    public static AjaxResult success(String msg) {
        return AjaxResult.success(msg, null);
    }

    /*** 返回成功消息 ** @param msg 返回内容 * @param data 数据对象 * @return 成功消息 */
    public static AjaxResult success(String msg, Object data) {
        return new AjaxResult(HttpStatus.SUCCESS, msg, data);
    }

    /*** 返回成功消息 ** @param msg 返回内容 * @param data 数据对象 * @return 成功消息 */
    public static AjaxResult success(String msg, Object data, Long total) {
        return new AjaxResult(HttpStatus.SUCCESS, msg, data, total);
    }

    /*** 返回失败消息 */
    public static AjaxResult fail() {
        return AjaxResult.fail("操作失败");
    }

    /*** 返回失败消息
     * ** @param msg 返回内容
     * * @return 警告消息 */
    public static AjaxResult fail(String msg) {
        return AjaxResult.fail(msg, null);
    }

    /*** 返回失败消息 ** @param msg 返回内容 * @param data 数据对象 * @return 警告消息 */
    public static AjaxResult fail(String msg, Object data) {
        return new AjaxResult(HttpStatus.BAD_REQUEST, msg, data);
    }

    /*** 返回错误消息 */
    public static AjaxResult error() {
        return AjaxResult.error("操作失败");
    }

    /*** 返回错误消息 ** @param msg 返回内容 * @return 警告消息 */
    public static AjaxResult error(String msg) {
        return AjaxResult.error(msg, null);
    }

    /*** 返回错误消息 ** @param msg 返回内容 * @param data 数据对象 * @return 警告消息 */
    public static AjaxResult error(String msg, Object data) {
        return new AjaxResult(HttpStatus.ERROR, msg, data);
    }

    /*** 返回错误消息
     * @param code 状态码
     *@param msg 返回内容
     * @return 警告消息
     *  */
    public static AjaxResult error(int code, String msg) {
        return new AjaxResult(code, msg, null);
    }

    /*** 返回错误消息 ** @param rows 状态码 * @return 添加修改删除转化信息 */
    public static AjaxResult toAjax(int rows) {
        return rows > 0 ? AjaxResult.success() : AjaxResult.fail();
    }
}
